ในโปรแกรมดังกล่าวข้างต้น จะคล้ายคลึงกับโปรแกรมด้านบนที่กล่าวมาแล้ว มีการนำเข้าแพ็คเกจเหมือนกัน มีการพิมพ์เพื่อแสดงผลเหมือนกันโดยใช้คำสั่ง Println แต่แทนที่เราจะพิมพ์ออกมาเป็นข้อความ เราพิมพ์เป็นการบวกเลขจำนวนเต็มเข้าไปแทนนั่นคือ 1+1 ซึ่งจะได้ผลลัพธ์ของ 1+1 นั่นคือ 2 นั่นเอง
ทำไมถึงต้องเลือกใช้ ภาษา Go?
เนื่องจากภาษาโกเป็นความพยายามในการรวมความสะดวกในการเขียนโปรแกรมของภาษาที่ถูกตีความการพิมพ์แบบไดนามิกกับประสิทธิภาพและความปลอดภัยของภาษาที่รวบรวมและพิมพ์แบบคงที่ นอกจากนี้ยังมีจุดมุ่งหมายที่จะทันสมัยด้วยการสนับสนุนสำหรับเครือข่ายและการคำนวณแบบมัลติคอร์
อะไรที่อยู่ในภาษา Go ที่ภาษาอื่นๆไม่มี?
- ภาษา Go พยายามลดปริมาณการพิมพ์ทั้งความรู้สึกของคำตลอดการออกแบบนักพัฒนาพยายามลดความยุ่งเหยิงและความซับซ้อน
- ไม่มีการประกาศสัญลักษณ์หน้าตัวแปรและไม่มีไฟล์ Header ทุกอย่างถูกประกาศครั้งเดียว
- ไม่มีลำดับชั้นของประเภท: เพียงแค่เป็นประเภทพวกเขาไม่จำเป็นต้องประกาศความสัมพันธ์ของพวกเขา
ข้อ จำกัด ของฮาร์ดแวร์
เราได้สังเกตเห็นว่าในทศวรรษที่ผ่านมาการกำหนดค่าฮาร์ดแวร์และการประมวลผลมีการเปลี่ยนแปลงในอัตราที่ช้ามาก ในปี 2004 P4 มีความเร็วสัญญาณนาฬิกา 3.0 GHz และในปี 2018 Macbook pro มีความเร็วสัญญาณนาฬิกาเป็นประมาณ (2.3Ghz v 2.66Ghz) เพื่อเพิ่มความเร็วฟังก์ชั่นที่เราใช้โปรเซสเซอร์มากขึ้น แต่การใช้โปรเซสเซอร์มากขึ้นค่าใช้จ่ายก็จะเพิ่มขึ้นเช่นกัน และด้วยเหตุนี้เราจึงใช้โปรเซสเซอร์ที่ จำกัด และใช้โปรเซสเซอร์ที่มี จำกัด เราจึงมีผลิตภัณฑ์จำนวนมาก ภาษาที่มีเธรดจะใช้หน่วยความจำมากขึ้นและทำให้ประสิทธิภาพของระบบช้าลงดังนั้นเพื่อแก้ไขปัญหาดังกล่าว Golang ได้รับการออกแบบในลักษณะที่แทนที่จะใช้เธรดโดยใช้ Goroutine ซึ่งคล้ายกับเธรด แต่ใช้หน่วยความจำน้อยมาก
เช่นเดียวกับเธรดที่กิน 1MB ในขณะที่ Goroutine ใช้หน่วยความจำ 2KB ดังนั้นในเวลาเดียวกันเราสามารถมี goroutine จำนวนมากได้ถูกกระตุ้น
ดังนั้นจุดที่กล่าวถึงข้างต้นทำให้ golang เป็นภาษาที่แข็งแกร่งซึ่งจัดการกับการทำงานพร้อมกันเช่น C ++ และ Java
ข้อดีและข้อเสียของ Go Language
ข้อดี:
- ยืดหยุ่นได้ง่ายกระชับและอ่านง่าย
- การทำงานพร้อมกัน - ช่วยให้กระบวนการทำงานหลายอย่างพร้อมกันและมีประสิทธิภาพ
- Quick Outcome- เวลาในการรวบรวมรวดเร็วมาก
- ไลบรารี่ - มีไลบรารี่มาตรฐานที่หลากหลาย
- Garbage collection - คือคุณสมบัติที่สำคัญของภาษา Go ทำงานได้อย่างยอดเยี่ยมในการควบคุมการจัดสรรหน่วยความจำจำนวนมากและลดเวลาแฝงลงอย่างมากในตัวรวบรวมขยะเวอร์ชั่นล่าสุด
- ตรวจสอบความถูกต้องสำหรับอินเทอร์เฟซและโค้ดชนิด embed ได้
ข้อเสีย:
- ไม่สนับสนุน generics แม้ว่าจะมีการถกเถียงกันมากมายเกี่ยวกับเรื่องนี้
- แพ็กเกจที่กระจายด้วยภาษาการเขียนโปรแกรมนี้มีประโยชน์มาก แต่ Go ไม่ได้ให้ความสำคัญกับการเขียนโปรแกรมเชิงวัตถุ แต่อย่างใด
- ไม่มีบางไลบรารีโดยเฉพาะชุดเครื่องมือ UI
แอพพลิเคชั่นยอดนิยมบางตัวที่พัฒนาขึ้นในภาษาโก
Docker: ชุดเครื่องมือสำหรับการปรับใช้คอนเทนเนอร์ลินุกซ์
Openshift: แพลตฟอร์มคลาวด์คอมพิวติ้งเป็นบริการโดย Red Hat
Kubernetes: อนาคตของกระบวนการปรับใช้อัตโนมัติที่ไร้รอยต่อ
Dropbox: โอนย้ายส่วนประกอบที่สำคัญบางอย่างจาก Python ไปยัง Go
Netflix: สำหรับสองส่วนของสถาปัตยกรรมเซิร์ฟเวอร์
InfluxDB: เป็นฐานข้อมูลอนุกรมเวลาแบบโอเพ่นซอร์สที่พัฒนาโดย InfluxData
Golang: ภาษาเขียนด้วยตัวเองในโก
คุณสมบัติของภาษา Go
การออกแบบภาษา: นักออกแบบของภาษาทำให้มีจุดประสงค์เพื่อให้ภาษาง่ายและเข้าใจง่าย รายละเอียดทั้งหมดอยู่ในจำนวนหน้าน้อยและมีการตัดสินใจการออกแบบที่น่าสนใจผ่านการสนับสนุน Object-Oriented
การจัดการแพคเกจ: ภาษา Go ผสานเวิร์กโฟลว์นักพัฒนาสมัยใหม่ในการทำงานกับโครงการโอเพ่นซอร์สและรวมถึงวิธีการจัดการแพ็คเกจภายนอก มีการสนับสนุนโดยตรงในการขับรถเพื่อรับแพ็คเกจภายนอกและเผยแพร่แพ็คเกจของคุณเองในชุดคำสั่งง่ายๆ
ไลบรารี่มาตรฐานที่ทรงพลัง: Go มีไลบรารี่มาตรฐานที่ทรงพลังซึ่งกระจายเป็นแพ็คเกจ
การพิมพ์ดีดแบบคงที่: Go เป็นภาษาที่พิมพ์แบบคงที่ ดังนั้นในคอมไพเลอร์นี้ไม่เพียง แต่ทำงานในการรวบรวมรหัสสำเร็จ แต่ยังช่วยให้มั่นใจในการแปลงประเภทและความเข้ากันได้ เนื่องจากคุณสมบัตินี้ไปหลีกเลี่ยงปัญหาทั้งหมดที่เราเผชิญในภาษาที่พิมพ์แบบไดนามิก
การสนับสนุนการทดสอบ: ไปให้คุณสมบัติการทดสอบหน่วยด้วยตัวเองนั่นคือกลไกง่าย ๆ ในการเขียนการทดสอบหน่วยของคุณขนานกับโค้ดของคุณเพราะสิ่งนี้คุณสามารถเข้าใจการครอบคลุมโค้ดของคุณโดยการทดสอบของคุณเอง เอกสารประกอบเป็นตัวอย่าง
แพลตฟอร์มอิสระ: Go language ก็เหมือนกับภาษา Java เพราะรองรับแพลตฟอร์มอิสระ เนื่องจากการออกแบบแบบแยกส่วนและ modularity เช่นรหัสจะถูกรวบรวมและถูกแปลงเป็นรูปแบบไบนารีซึ่งมีขนาดเล็กที่สุดและด้วยเหตุนี้จึงไม่จำเป็นต้องพึ่งพา รหัสสามารถรวบรวมในแพลตฟอร์มใด ๆ หรือเซิร์ฟเวอร์และแอปพลิเคชันที่คุณทำงาน